// index.js
const Koa = require("koa");
const json = require("koa-json"); //引入koa-json，只是将数据显示好看点
const bodyParser = require("koa-bodyparser"); //引入post 中间件用来处理post请求
const router = require("koa-router")(); //路由: ()直接实例化
const cors = require("koa-cors");
const koaBody = require("koa-body");
//文件系统,已在upload中具体引用
const path = require("path");
const KoaStatic = require("koa-static"); //处理静态资源

const config = require("./config");
const mysql = require("./mysql");
const app = new Koa();
app.use(cors());
app.use(json());

app.use(bodyParser()); //引入post 中间件用来处理post请求，不能喝koa-body共用
app.use(router.routes()); //启动路由
app.use(router.allowedMethods()); //接收get
//使用KoaStatic，绑定目录为./public/upload
// app.use(KoaStatic("./public/upload"));
app.use(KoaStatic(path.join(__dirname, "./public/upload")));

//启动路由获取
const FontApi = require("./front-end/fontApi");
const BackApi = require("./back-end/backApi");

FontApi.frontApi(router, mysql);
BackApi.backApi(router, mysql);

//路由接口请求方式.获取的是前端传递过来的值后端接受时的数据形式
router.get("/", async (ctx, next) => {
  // let url = ctx.url;

  //从request中获取GET请求
  let request = ctx.request; //获取前端请求
  let req_query = request.query; //query：返回的是格式化好的参数对象。
  let req_querystring = request.querystring; //返回的是请求字符串。
  //从上下文中直接获取（和上面的结果一样）
  // 和request中获取GET请求区别是更直接， ctx.request 里面包含很多，包括了query
  let ctx_query = ctx.query;
  // console.log(ctx.url);   //获取url地址
  // let ctx_querystring = (ctx.query_querystring = ctx.querystring);
  // console.log(ctx);
  // 返还的前端数据
  ctx.body = {
    title: "koa2 json",
    req_query,
    req_querystring,
    ctx_query,
  };
});

app.listen(config.port); //localhost:config.port

console.log(`listening on port ${config.port}`);
